#include <iostream>
#include <vector>
#include <cstdio>
#include <pthread.h>
#include <cstring>
#include <unistd.h>

void *routine(void* argv)
{
    int cnt = 5;

    while(cnt --)
    {
        std::cout << "new 线程 " << "线程ID:" << pthread_self() << std::endl;
        sleep(1);
    }

    return (void*)100;
}

int main()
{
    std::vector<pthread_t> counttcb;

    for(int i = 0;i < 10;++i)
    {
        pthread_t tcb;

        char* id = new char [64];

        snprintf(id,64,"new ID:%d",i);
        
        pthread_create(&tcb,nullptr,routine,id);

        counttcb.push_back(tcb);
    }

    int cnt = 10;

    while(cnt--)
    {
        std::cout << "main ID" << std::endl;;
        sleep(1);
    }

    for(int i = 0;i < 10;++i)
    {
        void* ret = nullptr;
        pthread_join(counttcb[i],&ret);
    }

    counttcb.clear();

    return 0;
}

// void *routine(void* argv)
// {
//     int cnt = 5;

//     while(cnt --)
//     {
//         std::cout << "new 线程 " << "线程ID:" << pthread_self() << std::endl;
//         sleep(1);
//     }

//     return (void*)11;
// }

// int main()
// {
//     pthread_t tcb;

//     // 创建线程
//     //          线程ID/线程属性/线程入口函数/线程入口函数的传参。
//     pthread_create(&tcb,nullptr,routine,nullptr);

//     int cnt = 10;

//     while(cnt--)
//     {
//         std::cout << "main 线程 " << "线程ID:" << pthread_self() << std::endl;
//         sleep(1);
//     }

//     void* ret = nullptr;

//     pthread_join(tcb,&ret);

//     std::cout << (long long)ret << std::endl;

//     return 0;
// }